const router = require('koa-router')()
// 引入jwt , jwt 生成和解析jwt 的
const jwt = require('jsonwebtoken')
// 引入密匙常量
const { SECRET } = require('../../conf/constants')
// 引入util 工具类
const util = require('util')
const verify = util.promisify(jwt.verify)

router.prefix('/users')

router.get('/', function (ctx, next) {
  ctx.body = 'this is a users response!'
})

router.get('/bar', function (ctx, next) {
  ctx.body = 'this is a users/bar response'
})

router.post('/login', (ctx,next)=>{
  // 获取传递过来的json 数据
  // 获取json 数据
  const { username, password } = ctx.request.body
  let userInfo = null
  if(username === 'zhangsan' && password === '18000494929'){
    userInfo = {
      id: 1,
      username: 'zhangsan',
      password: '18000494929',
      nickName: '张三'
    }
  }
  if(!userInfo){
    return ctx.body = {
      errno: 1,
      msg: '账号或密码错误'
    }
  }
  // 生成token verify是用来解析token的
  // 参数一加密的信息，参数二 密匙，参数三有效时长
  const token = jwt.sign(userInfo, SECRET, { expiresIn: '1h' })
  ctx.body = {
    errno: 0,
    token
  }
})

// 获取用户信息
router.get('/getUserInfo',async (ctx,next)=>{
  // 首先获取token信息
  const token = ctx.headers.authorization
  // 进行token 的验证和解析
  // 解析其中的内容
  try{

    // 解析是一个异步操作
    const res = await verify(token.split(' ').pop(),SECRET)
    console.log(res)
    ctx.body = '获取用户信息成功'
    ctx.body = {
      errno: 0,
      data: res
    }
  }catch(err){
    ctx.body = {
      errno: 1,
      msg: '请先登录'
    }
  }
  
  
 
  // 获取token
})

module.exports = router
